<?php
/**
 * Classe que representa o objeto Atividade
 * @name Atividade
 * @author Fabio Baía baiacfabio@gmail.com
 * @since 06/05/2013 15:57:43
 */
class Atividade{
	private $id;
	private $nome;
	private $descricao;
	private $valor;
	private $inicio;
	private $cargaHoraria;
	private $modalidade;
	private $palestrante;
	private $evento;
	private $limiteVagas;
	private $dataModificacao;
	
	private $participantes = null;
	private $inscricoes = null;
	
	public function Atividade(){
		$this->nome = "";
		$this->descricao = "";
		$this->inicio = "";
		$this->cargaHoraria = "";
		$this->valor = "";
		$this->dataModificacao = new DateTime("now");
		$this->limiteVagas = 0;
		
		$this->participantes = array();
		$this->inscricoes = array();
		$this->palestrante = array();
		
	}
			
	/**
	* @access public
	* @name setId
	* @param int $id Id do Atividade
	* @since 06/05/2013 16:25:16
	*/
	public function setId($id) {
		$this->id = $id;
	}
	
	/**
	* @access public
	* @name getId
	* @return int Id do Atividade 
	* @since 06/05/2013 16:25:49
	*/
	public function getId() {
		return $this->id;
	}

	/**
	* @access public
	* @name setNome
	* @param string $nome Nome da Atividade
	* @since 06/05/2013 16:27:16
	*/
	public function setNome($nome) {
		$this->nome = $nome;
	}
	
	/**
	* @access public
	* @name getNome
	* @return string Nome da Atividade
	* @since 06/05/2013 16:27:24
	*/
	public function getNome() {
		return $this->nome;
	}
	
	/**
	* @access public
	* @name setDescricao
	* @param string $descricao Descrição do Atividade
	* @since 06/05/2013 16:52:44
	*/
	public function setDescricao($descricao) {
		$this->descricao = $descricao;
	}
	
	/**
	* @access public
	* @name getDescricao
	* @return string Descrição do Atividade
	* @since 06/05/2013 16:53:04
	*/
	public function getDescricao() {
		return $this->descricao;
	}
	
	/**
	 * @access public
	 * @name setDataModificacao
	 * @param DateTime $data Data de modificação
	 * @since 24/04/2013 21:17:19
	 */
	public function setDataModificacao($dataModificacao){
		$this->dataModificacao = $dataModificacao;
	}
	
	/**
	 * @access public
	 * @name getDataModificação
	 * @return DateTime Data de modificação
	 * @since 24/04/2013 21:18:10
	 */
	public function getDataModificacao(){
		return $this->dataModificacao;
	}
	
	/**
	* @access public
	* @name setPalestrante
	* @param $palestrante
	* @since 06/05/2013 15:30:02
	*/
	public function setPalestrante($palestrante) {
		$palestrante->addAtividade($this);
		$this->palestrante = $palestrante;
	}
	
	/**
	* @access public
	* @name getPalestrante
	* @return Palestrante
	* @since 06/05/2013 15:31:27
	*/
	public function getPalestrante() {
		return $this->palestrante;
	}
	
	/**
	* @access public
	* @name setModalidade
	* @param Modalidade $modalidade
	* @since 06/05/2013 16:08:56
	*/
	public function setModalidade($modalidade) {
		$this->modalidade = $modalidade;
	}
	
	/**
	* @access public
	* @name getModalidade
	* @return Modalidade
	* @since 06/05/2013 16:09:22
	*/
	public function getModalidade() {
		return $this->modalidade;
	}
	
	/**
	* @access public
	* @name addParticipante
	* @param $participante
	* @since 06/05/2013 16:53:54
	*/
	public function addParticipante($participante) {
		//$participante->setAtividade($this);
		$this->participantes[] = $participante;
	}
	
	/**
	* @access public
	* @name getParticipantes
	* @return array Participantes
	* @since 06/05/2013 16:55:21
	*/
	public function getParticipantes() {
		return $this->participantes;
	}
	
	/**
	* @access public
	* @name addInscricao
	* @param Inscricao $inscricao
	* @since 06/05/2013 17:35:46
	*/
	public function addInscricao($inscricao) {
		if(!$this->inscricoes->contains($inscricao)){
			$this->inscricoes[] = $inscricao;
		}
	}
	
	/**
	* @access public
	* @name getInscricoes
	* @return array Inscricoes
	* @since 06/05/2013 17:36:25
	*/
	public function getInscricoes() {
		return $this->inscricoes;
	}
	
	/**
	* @access public
	* @name setValor
	* @param string $valor
	* @since 07/05/2013 03:30:06
	*/
	public function setValor($valor) {
		$this->valor = $valor;
	}
	
	/**
	* @access public
	* @name getValor
	* @param 
	* @since 07/05/2013 03:31:20
	*/
	public function getValor() {
		return $this->valor;
	}
	
	/**
	* @access public
	* @name setInicio
	* @param DateTime $inicio Data e hora da atividade
	* @since 07/05/2013 14:57:45
	*/
	public function setInicio($inicio) {
		$this->inicio = $inicio;
	}
	
	/**
	* @access public
	* @name getInicio
	* @return DateTime Data e hora da atividade
	* @since 07/05/2013 14:59:43
	*/
	public function getInicio() {
		return $this->inicio;
	}
	
	/**
	* @access public
	* @name setCargaHoraria
	* @param string $cargaHoraria Carga Horaria da Atividade
	* @since 07/05/2013 15:00:21
	*/
	public function setCargaHoraria($cargaHoraria) {
		$this->cargaHoraria = $cargaHoraria;
	}
	
	/**
	* @access public
	* @name getCargaHoraria
	* @return string Carga Horaria da Atividade
	* @since 07/05/2013 15:01:25
	*/
	public function getCargaHoraria() {
		return $this->cargaHoraria;
	}
	
	/**
	* @access public
	* @name setLimiteVagas
	* @param $limiteVagas Limite de Vagas
	* @since 15/07/2013 17:45:31
	*/
	public function setLimiteVagas($limiteVagas) {
		$this->limiteVagas = $limiteVagas;
	}
	
	/**
	* @access public
	* @name getLimiteVagas
	* @return string Limite de Vagas 
	* @since 15/07/2013 17:46:08
	*/
	public function getLimiteVagas() {
		return $this->limiteVagas;
	}
	
	/**
	* @access public
	* @name setEvento
	* @param Evento $evento
	* @since 07/05/2013 21:58:49
	*/
	public function setEvento($evento) {
		$this->evento = $evento;
	}
	
	/**
	* @access public
	* @name getEvento
	* @return array Eventos
	* @since 07/05/2013 21:59:38
	*/
	public function getEvento() {
		return $this->evento;
	}
	
	
	/**
	* Essa funcao foi implementada para sanar o fixar o erro da funcao serialize
	* @access public
	* @name __sleep
	* @return $array
	* @since 10/06/2013 22:08:46
	*/
	/*public function __sleep() {
		//adicionar no array o nome de todos os atributos da classe
			return array('id', 'nome', 'descricao');
	}
	*/
	
}